home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 426-450 / disk_437 / patchcompiler / anleitung < prev    next >
Text File  |  1992-05-06  |  9KB  |  202 lines

  1.  
  2.  
  3.   ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  4.   ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  5.   ­­                                                                   ­­
  6.   ­­                       PatchStarCompiler V1.00                     ­­
  7.   ­­                                                                   ­­
  8.   ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  9.   ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  10.   ­­                                                                   ­­
  11.   ­­      Copyright 1990      Roger Fischlin                           ­­
  12.   ­­                          Steigerwaldweg 6                         ­­
  13.   ­­                          6450 Hanau 7                             ­­
  14.   ­­                          Deutschland                              ­­
  15.   ­­                                                                   ­­
  16.   ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  17.   ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  18.   ­­                                                                   ­­
  19.   ­­  Dieses Programm ist  FREEWARE, d.h. das Urheberrecht liegt beim  ­­
  20.   ­­  Autor !                                                          ­­
  21.   ­­                                                                   ­­
  22.   ­­  Die Weitergabe ist nur erlaubt wenn :                            ­­
  23.   ­­  1. der Name des Autors und der Copyright-Vermerk nicht entfernt  ­­
  24.   ­­     wurden,                                                       ­­
  25.   ­­  2. die  Weitergabe  unentgeldlich  ist  bzw. nur  die  DIREKTEN  ­­
  26.   ­­     Kosten erhoben werden.                                        ­­
  27.   ­­                                                                   ­­
  28.   ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  29.   ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  30.  
  31.  
  32.  
  33.  
  34.  
  35.   Patchen, d.h. das gezielte manipulieren einiger  Bytes eines Files, ist
  36.   in Mode gekommen. Überlicherweise benötigen Sie zum Patchen einen File-
  37.   Editor (z.B. "NewZap","FileMaster"). Deshalb  entstand die  Idee,  eine
  38.   einfache ,  PASCAL-ähnliche  Programmiersprache  speziell   für  Patch-
  39.   Programme zu entwickeln. Diese Programme können dann mit dem PatchStar-
  40.   Compiler in ein im CLI ausführbares Programm übersetzt werden.
  41.  
  42.  
  43.  
  44.  
  45.  
  46.                             PatchStar-Spache
  47.                            ­­­­­­­­­­­­­­­­­­
  48.  
  49.   Die Spache umfaßt nur wenige Befehle:
  50.  
  51.   TEXT, PATCH, CHECK, IF TRUE, IF FALSE, BEGIN, END, EXIT
  52.  
  53.   Allgemein  achtet  der  Compiler  weder auf  Groß- und Kleinschreibung,
  54.   ferner können  beliebig viele  Leerzeichen  und Tabs zur besseren Über-
  55.   sichtlichkeit eingefügt  werden.  Jede  Zeile  kann  mit einem vorange-
  56.   stellten "*"-  oder  ";"-Zeichen als  Kommentarzeile  genutzt   werden,
  57.   außerdem kann mit einen ";"-Zeichen am Zeilenende nach dem Befehle eine
  58.   Bemerkung im Quellcode hinzugefügt werden.
  59.  
  60.  
  61.  
  62.   TEXT     : TEXT entspricht  der  PASCAL-Anweisung  "WriteLn".Der in An-
  63.              führungszeichen eingeschlossen Text wird im CLI-Fenster aus-
  64.              gegeben, anschließend  springt der  Cursor   in die  nächste
  65.              Zeile.
  66.              Beispiele :   TEXT "Programm gepatcht."
  67.                            TEXT 'Falsche Programmversion !'
  68.  
  69.  
  70.   PATCH    : PATCH ist der zentrale Befehl zum Patchen. Nach dem Befehls-
  71.              wort folgt die  Adresse (in  dezimaler,  hexadezimaler  [$],
  72.              binärer [%] oder oktaler [@] Schreibweise). Nach  mindestens
  73.              einem Leerzeichen folgenden dann  die   zu  patchenden Byte-
  74.              Werte in hexadezimaler Form. Zur besseren  Übersichtlichkeit
  75.              kann nach der Patch-Adresse ebenfalls ein Doppelpunkt einge-
  76.              fügt werden. Falls Sie jedoch einen  String patchen möchten,
  77.              so  wird  dieser  statt   der einzelnen Bytes in Anführungs-
  78.              zeichen gestzt. Das Mischen von Byte- und String-Angaben ist
  79.              nicht möglich !
  80.              Da PATCH der zentrale Befehl ist, kann das Befehlswort  auch
  81.              entfallen  und  man beginnt  direkt  mit  der Patch-Adresse.
  82.  
  83.              Beispiele :   PATCH $0000  :  "256"
  84.                            PATCH 50        ff ff ff ea
  85.                            PATCH %110      '200'
  86.                                  123456    $4a $99 $5a
  87.                                  @00       $349afb
  88.  
  89.  
  90.   CHECK    : CHECK  dient  zum  Überprüfen  von  Bytes  der zu patchenden
  91.              Datei. Dies mag sinnvoll sein, wenn der  Patch z.B.  mehrere
  92.              Programmversionen bearbeiten kann. Aber auch eine Abfrage,ob
  93.              es sich um die richtige Version handelt, kann vor falsch ge-
  94.              patchten  Files bewahren. Der  Befehl hat die gleiche Syntax
  95.              wie PATCH, das Befehlswort darf aber nicht entfallen, da der
  96.              Compiler die  Anweisung  sonst als einen PATCH-Befehl inter-
  97.              pretiert. Das  Ergebnis  der  Abfrage  kann anschließend mit
  98.              Hilfe der IF-Anweisung (siehe unten) ausgewertet werden.
  99.  
  100.              Beispiele :   CHECK $0000  :  "256"
  101.                            CHECK 50        ff ff ff ea
  102.                            CHECK %110      '200'
  103.  
  104.  
  105.   BEGIN    : Mit BEGIN  und  END werden, wie in Pascal, mehrere Programm-
  106.   END        zeilen zusammengefaßt. Dies ist nach einer IF-Abfrage (siehe
  107.              unten) nötig, damit der Compiler  weiß, welche  Befehle  der
  108.              Computer ausführen soll, und welche wer gegebenenfalls über-
  109.              springen soll.
  110.  
  111.  
  112.  
  113.   IF FALSE : Mit beiden IF-Befehlen wird das Ergebnis der CHECK-Anweisung
  114.   IF TRUE    verarbeitet. Die  nach "IF FALSE"  folgenden Befehle  werden
  115.              ausgeführt, wenn die CHECK-Überprüfung negativ (falsch) war,
  116.              die sich an "IF TRUE" anschließenden Anweisungen werden aus-
  117.              geführt, falls die Überprüfung positiv (wahr) war. Die  nach
  118.              der IF-Anweisung auszuführenden Befehle müssen, auch wenn es
  119.              sich nur um einen Befehl handelt, innerhalb einer BEGIN-END-
  120.              Anweisung stehen. 
  121.              Der IF-Befehl bezieht sich immer auf die zuletzt ausgeführte
  122.              CHECK-Anweisung ! Innerhalb der  BEGIN-END-Anweisung  können
  123.              weitere IF-Abfragen vorkommen.
  124.  
  125.  
  126.              Beispiel  :   CHECK $132  :  "256"
  127.                            IF TRUE
  128.                               BEGIN
  129.                                    TEXT "PAL-Version !"
  130.                               END
  131.                            IF FALSE
  132.                               BEGIN
  133.                                    PATCH $132 : "256"
  134.                                    TEXT "NTSC- auf PAL-Version gepatcht!"
  135.                               END
  136.  
  137.  
  138.  
  139.  
  140.   EXIT     : Trifft der Computer auf  eine EXIT-Anweisung, beendet er die
  141.              Ausführung des Patches vorzeitig.
  142.  
  143.  
  144.              Beispiel  :   CHECK $4656  :  "1.3"
  145.                            IF FALSE
  146.                               BEGIN
  147.                                    TEXT "Leider falsche Programmversion!"
  148.                                    EXIT
  149.                               END
  150.  
  151.  
  152.  
  153.  
  154.                              Beispielprogramm           
  155.   ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  156.  
  157.   ; ED Patch      taken from FileMaster
  158.  
  159.  
  160.   check $1aad : "199"                 ; check if it's the right version !
  161.  
  162.  
  163.   if true                                    ; yes, now patch window size
  164.      begin
  165.           Patch $1aad : "255"
  166.           Text  "ED 1.4 will now open PAL window."
  167.      end
  168.  
  169.  
  170.  
  171.   if false                         ; no, it's a different version of ED !
  172.      begin
  173.           Text "Sorry, wrong version of ED !"
  174.      end
  175.  
  176.  
  177.   ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.                             Patch erzeugen
  185.                            ­­­­­­­­­­­­­­­­
  186.  
  187.   Erstellen Sie den Quellcode in der oben beschriebenen Sprache  in einem
  188.   ASCII-Editor (z.B. ED) und speichern Sie die Datei ab.Erzeugen Sie eine
  189.   zweite Datei,  deren Inhalt  beim  Aufruf  des Programmes mit einem "?"
  190.   ausgeben wird. Rufen Sie dann im CLI den PatchStarCompiler auf:
  191.  
  192.   1> PatchStarCompiler <Info-Datei> <Quellcode> <Name des Patches>
  193.  
  194.  
  195.   Der Compiler generiert in mehren Schritten  aus  den Dateien das  reine
  196.   Patch-Programm  und  speichert  es unter dem  Namen,  der  als  dritter
  197.   Parameter übergeben wurde.
  198.  
  199.  
  200.  
  201.                                         27. Oktober 1990   Roger Fischlin  
  202.